home *** CD-ROM | disk | FTP | other *** search
/ Aminet 2 / Aminet AMIGA CDROM (1994)(Walnut Creek)[Feb 1994][W.O. 44790-1].iso / Aminet / misc / amag / sh9302a.lha / KickSwitch (S.25) / KickReboot.asm next >
Assembly Source File  |  1993-11-10  |  1KB  |  38 lines

  1. ; KickReboot.asm geschrieben von Patrick Ohly
  2. ; nach ColdReboot.asm veröffentlicht von Commodore
  3.  
  4.  
  5. ABSEXECBASE            EQU 4                    ;Zeiger auf ExecBase
  6. MAGIC_ROMEND        EQU $01000000        ;Ende des Kickstart-ROMs
  7. MAGIC_SIZEOFFSET    EQU -$14                ;Offset vom Ende des ROMs zur Größe
  8. _LVOSupervisor        EQU -30                ;Offset der Supervisor-Funktion
  9. _LVODisable            EQU -120                ;Offset der Disable-Funktion
  10. CHKSUM                EQU $52                ;Offset für Library-Checksum
  11. PRA                    EQU $bfe001            ;Register mit linker Maustaste
  12. LMB                    EQU 6                    ;Bit für die linke Maustaste
  13.  
  14.  
  15.    section text,code
  16.  
  17.    XDEF _KickReboot
  18. _KickReboot:
  19.         move.l    ABSEXECBASE,a6
  20.         jsr    _LVODisable(a6)            ;schalte Interrupts ab
  21.         addq.w    #1,CHKSUM(a6)            ;erzwingt Neuaufbau der ExecBase
  22.         lea.l    Loop(pc),a5             ;Adresse des auszuführenden Codes 
  23.         jsr    _LVOSupervisor(a6)      ;Code anspringen
  24.         ;Funktion wird nicht beendet!
  25.  
  26.  
  27.         ds.l        0
  28. Loop: move.b PRA,d0        ;Auf Mausklick warten ...
  29.         btst #LMB,d0
  30.         bne  Loop
  31.  
  32.         lea.l    MAGIC_ROMEND,a0            ;Adresse der Initialisierungs-
  33.         sub.l    MAGIC_SIZEOFFSET(a0),a0 ;Routine im ROM ausrechnen ...
  34.         move.l    4(a0),a0
  35.         subq.l    #2,a0
  36.         reset                                    ;Reset ...
  37.         jmp    (a0)                    ;Routine anspringen
  38.